from datetime import datetime

import ttkbootstrap as ttk
from ttkbootstrap.constants import *

from app.util.annotation_util import annotate, ClassInfo
from app.view.base_view import View
from config.tk_desktop_toolset_param import version, app_name, author_email


@annotate(ClassInfo(name="主页", category="file"))
class HomeView(View):
    def __init__(self, parent, controller):
        super().__init__(parent, controller)
        # 加载页面内容
        self.create_welcome_section()
        self.create_notice_section()
        self.create_footer()

    def center_window(self):
        """使窗口在屏幕中居中"""
        self.update_idletasks()
        width = self.winfo_width()
        height = self.winfo_height()
        x = (self.winfo_screenwidth() // 2) - (width // 2)
        y = (self.winfo_screenheight() // 2) - (height // 2)
        self.geometry(f"{width}x{height}+{x}+{y}")

    def create_welcome_section(self):
        """创建欢迎用语区域"""
        welcome_frame = ttk.LabelFrame(
            self,
            text="欢迎使用",
            padding=20
        )
        welcome_frame.pack(fill=X, pady=(0, 20))

        # 标题
        title_label = ttk.Label(
            welcome_frame,
            text=f"{app_name}",
            font=("微软雅黑", 24, "bold"),
            bootstyle="primary"
        )
        title_label.pack(pady=(10, 20))

        # 欢迎文本
        welcome_text = f"""
                欢迎使用{app_name}！融合测试、工具、批处理多功能工具集合。
                """
        desc_label = ttk.Label(
            welcome_frame,
            text=welcome_text,
            font=("微软雅黑", 10),
            wraplength=800,
            justify=LEFT
        )
        desc_label.pack(anchor=W, pady=5)

        # 日期显示
        self.date_var = ttk.StringVar()
        self.update_date()  # 更新日期
        date_label = ttk.Label(
            welcome_frame,
            textvariable=self.date_var,
            font=("微软雅黑", 9),
            bootstyle="secondary"
        )
        date_label.pack(anchor=E, pady=10)

    def update_date(self):
        """更新日期显示"""
        current_date = datetime.now().strftime("%Y年%m月%d日 %A %H:%M")
        self.date_var.set(f"当前时间：{current_date}")
        self.after(60000, self.update_date)  # 每分钟更新一次

    def create_notice_section(self):
        """创建注意事项区域"""
        notice_frame = ttk.LabelFrame(
            self,
            text="注意事项",
            padding=20
        )
        notice_frame.pack(fill=X, pady=(0, 20))

        # 注意事项列表
        notice_list = [
            "系统运行需要稳定的设备连接，使用过程中请确保设备连接正常。",
            "使用过程中如遇卡顿，请关闭无关程序或重启系统。",
        ]

        # 创建带图标的列表
        for idx, notice in enumerate(notice_list):
            row_frame = ttk.Frame(notice_frame)
            row_frame.pack(fill=X, pady=5, anchor=W)

            # 图标
            ico_label = ttk.Label(
                row_frame,
                text="⚠️",  # 警告图标
                font=("Arial", 12)
            )
            ico_label.pack(side=LEFT, padx=(5, 10))

            # 文本
            text_label = ttk.Label(
                row_frame,
                text=notice,
                font=("微软雅黑", 10),
                wraplength=700,
                justify=LEFT
            )
            text_label.pack(side=LEFT, anchor=W)

    def create_footer(self):
        """创建页脚信息"""
        footer_frame = ttk.Frame(self)
        footer_frame.pack(side=BOTTOM, fill=X, pady=10)

        footer_label = ttk.Label(
            footer_frame,
            text=f"© 2023-{datetime.now().strftime('%Y')} {app_name} 版本 {version}",
            font=("微软雅黑", 9),
            bootstyle="secondary"
        )
        footer_label.pack(side=BOTTOM, anchor=CENTER)

        contact_support = ttk.Label(
            footer_frame,
            text=f"技术支持邮箱：{author_email}",
            font=("微软雅黑", 9),
            bootstyle="secondary"
        )
        contact_support.pack(side=BOTTOM, anchor=CENTER)

    def create_widgets(self):
        pass
